// 防抖原理，使用setTimeOut，每次触发时清空setTimeOut

function debounce(fn, delay) {
 let timeout = null
 return function(){
  clearTimeout(timeout)
  timeout = setTimeout(()=>{
    // fn()这样就没有参数了
    // 这样能把参数带进去
    // arguments 调用这个匿名函数时的传参
    fn.apply(this, arguments)
  },delay)
 }
}


// 节流原理
// 记录时间，当时间间隔超出设定时间间隔就触发函数
function throttle(fn, delay){
  const lastTime = 0
  return function (){
    const now = Date.now()
    if(now - lastTime > delay){
      fn.apply(this,arguments)
      lastTime = now
    }
  }
}


function textArguments(fn, delay){
  console.log(arguments,'打印arguments')
  // console.log(fn,'fn')
  // console.log(fn())
  // console.log(fn.apply(this,arguments))
  return function (){
    console.log(arguments,'打印arguments')
    fn.apply(this,arguments)
  }
}


function sum(a1,a2){
  console.log(a1,a2)
  return a1 + a2
}
const argfun = textArguments(sum,1000)

argfun(1,2)